package model

import (
	"gorm.io/gorm"
	"time"
	"video-srv/basic/config"
)

type Protobuf struct {
	Id             uint32         `gorm:"column:id;type:int UNSIGNED;comment:审核ID;primaryKey;not null;" json:"id"`                         // 审核ID
	VideoId        int32          `gorm:"column:video_id;type:int;comment:视频ID;not null;" json:"video_id"`                                 // 视频ID
	ProtobufUserId int32          `gorm:"column:protobuf_user_id;type:int;comment:审核员ID;not null;" json:"protobuf_user_id"`                // 审核员ID
	Content        string         `gorm:"column:content;type:varchar(60);comment:审核意见/理由;not null;" json:"content"`                        // 审核意见/理由
	Status         int8           `gorm:"column:status;type:tinyint(1);comment:审核状态: 0-待审 1-通过 2-拒绝/驳回;not null;default:0;" json:"status"` // 审核状态: 0-待审 1-通过 2-拒绝/驳回
	CreatedAt      time.Time      `gorm:"column:created_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"`
	UpdatedAt      time.Time      `gorm:"column:updated_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"`
	DeletedAt      gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);default:NULL;" json:"deleted_at"`
}

func (p *Protobuf) TableName() string {
	return "protobuf"
}

func (p *Protobuf) AddProtobuf() error {
	return config.DB.Create(&p).Error
}

// 审核状态: 0-待审 1-通过 2-拒绝/驳回
func (p *Protobuf) UpdateProtobuf() error {
	return config.DB.Updates(&p).Error
}

func (p *Protobuf) FindProtobuf() error {
	return config.DB.Where("video_id = ?", p.VideoId).
		Order("created_at desc").Find(&p).Error
}
